Computer downtime, or the period of time in which a particular computer is unavailable for use, often raises significant concerns in a number of computer applications. For single-user computers, computer downtime may only inconvenience the primary users of the computers. However, for multi-user computers such as mainframe computers, midrange computers, supercomputers, network servers, and the like, the inability to use a particular computer may have a significant impact on the productivity of a relatively large number of users, particularly in mission-critical applications. A large proportion of multi-user computers are used around the clock, and as a result, it is often critically important that these computers be available as much as possible.
However, multi-user computers, like anything else, need to be maintained from time to time. Components may fail and need replacement. Also, as the workload of a computer increases, additional components may need to be added. Furthermore, as technology advances, new and improved components may become available. With many conventional computers, however, many of these operations require that the computers be shut down and made unavailable while maintenance is being performed.
To address the problems associated with computer downtime, significant development efforts have been made in the area of concurrent maintenance. Concurrent maintenance is a process by which maintenance of a computer occurs while the computer is running, and with minimal impact of user accessibility.
For example, a number of computer interfaces have been proposed and/or implemented in the area of "hot swappability", whereby components may be installed and/or removed from a computer without having to shut down and/or restart the computer. For example, a Peripheral Component Interconnect (PCI) hot plug specification has been defined to permit electronic components to be installed and/or removed from a PCI bus implemented in a computer.
A PCI bus is typically a high speed interface between the processing complex of a computer and one or more "slots" that receive printed circuit boards known as interface or adapter cards. The cards typically control hardware devices that are either disposed on the cards or are coupled thereto through dedicated cabling. Any number of hardware devices may be coupled to a computer in this manner, including computer displays, storage devices (e.g., disk drives, optical drives, floppy drives, and/or tape drives), workstation controllers, network interfaces, modems, and sound cards, among others. The PCI hot plug specification permits individual slots on a PCI bus to be selectively powered off to permit cards to be removed from and/or installed into the slots.
One problem, however, with the PCI hot plug specification, as well as other concurrent maintenance implementations, is that often additional steps such as manual reconfiguration and/or partial or total system restart are required. Specifically, updates are often required to the computer programs that function as the interfaces between the computer and various hardware devices.
Using such interface computer programs, for example, enables the complexity and specifics of a particular hardware device to be effectively hidden from another computer program wishing to use the device. In many environments, the computer programs that interface hardware devices with computers are referred to as "resources" (which are also referred to in some environments simply as hardware drivers, device drivers, or input/output (I/O) drivers, among others). Often a resource is implemented within the operating system of the computer, and thus resides between the hardware devices and the computer applications that use such hardware devices.
By using a resource to interface a hardware device with a computer, a computer application that wishes to access the hardware device can do so through a common set of commands that are independent of the underlying specifics of the hardware device. For example, a resource associated with a disk drive controller may provide a set of commands such as "open file", "read data", "write data" or "close file" that can be called by any computer application that wishes to perform an operation on a disk drive coupled to the controller. It does not matter to the computer application that the disk drive controller is installed in slot 3 or slot 4, or that the controller adheres to the Small Computer Systems Interface (SCSI) or Integrated Drive Electronics (IDE) standard to transmit information between the disk drive and the controller. Moreover, if the computer application wishes to access another disk drive, the same set of generic commands may often be used even if the other disk drive is significantly different from the first.
However, different hardware devices typically do require specific operations to be performed in response to the generic commands issued by a computer application. Thus, a resource is often required to perform device-specific operations for a particular device in order to handle a generic command requested by a computer application. In conjunction with these tasks, the resource typically maintains device-specific information such as the location of the hardware device, the type of device, and other device characteristics.
Typically, a resource has, among other information, some form of indication that identifies the resource to the computer applications, generally referred to herein as a resource identifier. A resource may also have some form of indication as to where in the computer the hardware device associated with the resource is located (e.g., at a particular bus location, in a particular slot, etc.), also referred to herein as a location identifier. Furthermore, a resource may have some form of indication that uniquely identifies the hardware device associated with the resource to distinguish that device from other devices that may or may not be installed in the computer, also referred to herein as a device identifier.
Conventional concurrent maintenance implementations typically have no manner of automatically reconfiguring a resource in response to a change in the status of the hardware device associated with the resource. Therefore, when a hardware device is installed, removed or replaced, any resource associated with the hardware device often must be manually reconfigured by a system operator (e.g., by manually updating one or more system configuration files associated with the resource). Often, this also requires individual computer applications that rely on a resource to also be manually reconfigured. Such reconfigurations often require the resource and/or computer applications relying on the resource to be temporarily inaccessible to users, thereby extending the downtime associated with conventional concurrent maintenance implementations. Otherwise, automatic reconfiguration may be supported, but only after the computer, or at least the operating system of the computer, is restarted--a process that can often be slow and time consuming.
Therefore, a significant need exists for a manner of supporting concurrent maintenance in a computer without requiring manual reconfiguration and/or a time consuming system restart to update the resources utilized by computer applications executing in the computer, and/or the applications themselves.